Computer platform firmware is used during initialization of computer systems to verify system integrity and configuration. It also generally provides the basic low-level interface between hardware and software components of those computer systems, enabling specific hardware functions to be implemented via execution of higher-level software instructions contains in computer programs that run on the computer systems. In computers, a primary portion of this firmware is known as the Basic Input/Output System (BIOS) code of a computer system. The BIOS code comprises a set of permanently recorded (or semi-permanently recorded in the case of systems that use flash BIOS) software routines that provides the system with its fundamental operational characteristics, including instructions telling the computer how to test itself when it is turned on, and how to determine the configurations for various of built-in components and add-on peripherals.
In a typical PC architecture, the BIOS is generally defined as the firmware that runs between the processor reset and the first instruction of the Operating System (OS) loader. This system initialization time-frame is commonly referred to as “pre-boot,” and the execution environment prior to OS loading is called the pre-boot environment. As shown in FIG. 1, in a typical PC 100, the base portion of the BIOS code is stored in some type of ROM (read only memory) device on the PC's mainboard (i.e., motherboard) 102, such as a standard PROM 104 or a flash memory device 106. In some configurations, this base portion may be extended using code stored in ROM BIOS chips 108 contained on one or more add-on peripheral cards 110, such as SCSI controllers and bus-mastering devices. This portion of the BIOS is stored in components that are commonly referred to as “option ROMs.” The BIOS code in peripheral card ROM BIOS chips 108 typically concerns specific functionality provided by their corresponding peripheral card and is executed during initialization of that peripheral card according to a (mostly) well-defined set of rules. In either of the foregoing configurations, all BIOS firmware is stored on non-volatile memory devices, either on the motherboard or in option ROMs on the peripheral card(s) added to a system.
In many instances, the basic functionality of a computer system platform is defined by the platform's firmware. Accordingly, in order to enhance this functionality, corresponding code needs to be added to or modified in the firmware. In today's PC's, this may be accomplished by either replacing the BIOS chip(s) on the motherboard (and/or peripheral cards), or, if those BIOS code is contained in rewritable chips (e.g., flash memory chips), executing a BIOS update software program that replaces the existing BIOS code with new code. Both of these methods requires user actions that may be prone to error, including improperly installing the new BIOS chips and inadvertently damaging the BIOS code by updating it with the wrong code or having a power failure or system crash in the middle of the code-update process. Furthermore, extensions to the system firmware are limited to the firmware code that may be stored on these IC-based firmware devices.